package dao;

import entidades.Vendedor;
import java.util.Vector;

/**
 * Clase de la capa de Persistencia, encargada de recuperar, guardar
 * y actualizar Vendedores de la base de datos.
 */
public class DAOVendedor extends DAO{
    /**
     * Retorna el vector de objetos Vendedor cargadas en la base de datos.
     *
     * @return El vector de objetos Vendedor, null si no existe
     */
    public static Vector<Vendedor> getAll() {
        return getAll("Vendedor");
    }

    /**
     * Obtiene los Vendedores que coinciden con la consulta
     * @param query String  Consulta con las condiciones que se deseas satisfacer
     * @return      Vector  Lista de vendedores que satisfacen la consulta
     */
    public static Vector<Vendedor> get(String query) {
        return getAll(query);
    }
    
    /**
     * Obtiene el vendedor con el ID especificado
     * @param id Integer        ID de un vendedor
     * @return   Vendedor       Vendedor con el id especificado
     */
    public static Vendedor getByID(Integer id) 
    {
        Vector<Vendedor> vendedores = get("Vendedor where idVendedor = "+ id);
        
        if(!vendedores.isEmpty()) 
            return vendedores.get(0);

        return null;
    }

    /**
     * Obtiene el primer Vendedor con el numero de documento especificado
     * @param numDoc    String      Número de documento
     * @return          Vendedor    Vendedor con el número de documento indicado
     */
    public static Vendedor getByNumDoc(String numDoc) 
    {
        Vector<Vendedor> vendedores = get("Vendedor where numDoc = "+ numDoc);
        
        if(!vendedores.isEmpty()) 
            return vendedores.get(0);

        return null;
    }
    
    /**
     * Obtiene el primer vendedor que coincida con el nombre y apellido especificado
     * @param nombre    String      nombre y apellido
     * @return          Vendedor    Vendedor encontrado
     */
    public static Vendedor getByNombre(String nombre) {
        String [] nombres = nombre.split(" ");
         Vector<Vendedor> vendedores = get("Vendedor where nombre = '"+ nombres[0] + "' and apellido = '"+nombres[1] + "'");
        
        if(!vendedores.isEmpty()) 
            return vendedores.get(0);

        return null;
    }
    
    /**
     * Obtiene un listado con los nombres completos de todos los vendedores
     * @return Vector   Listado de nombres completos de los vendedores
     */
    public static Vector<String> getAllNombreApellido() 
    {
        Vector<String> nombresApellidos = new Vector();
        Vector<Vendedor> vendedores = getAll();
        
        nombresApellidos.add(" ");
        for(int i = 0; i<vendedores.size(); i++)
            nombresApellidos.add(vendedores.get(i).getNombre() + " " + vendedores.get(i).getApellido());

        return nombresApellidos;
    }

    /**
     * Persiste (inserta) un Vendedor en la base de datos
     * @param p Vendedor    Vendedor que se desea insertar
     * @return  boolean     true si fue exitoso, false en caso contrario
     */
    public static boolean insert(Vendedor v) {
        return guardarOActualizarObjeto(v);
    }

    /**
     * Borra (elimina) un Vendedor de la base de datos
     * @param p Vendedor    Vendedor que se desea borrar
     * @return  boolean     true si fue exitoso, false en caso contrario
     */
    public static boolean delete(Vendedor v) {
        return eliminarObjeto(v);
    }
}
